package charlie;

import charlie.exception.CalculadoraException;

public class CalculadoraTest extends labase.poo.CalculadoraTest {

	public CalculadoraTest(String name) {
		super(name);
	}
	
	public void testeCalculadoraDecimal() throws CalculadoraException{
		Calculadora calculadora = new Calculadora();
		assertEquals("1", calculadora.entraUm());
		assertEquals("11", calculadora.entraUm());
		assertEquals("111", calculadora.entraUm());
		assertEquals("111", calculadora.comandoSoma());
		assertEquals("1", calculadora.entraUm());
		assertEquals("11", calculadora.entraUm());
		assertEquals("111", calculadora.entraUm());
		assertEquals("222", calculadora.comandoSoma());
		assertEquals("0", calculadora.limpa());

	}
	public void testeCalculadoraBinaria() throws CalculadoraException{
		Calculadora calculadora = new Calculadora();
		calculadora.modoBin();
		assertEquals("0b1", calculadora.entraUm());
		calculadora.modoBin();
		assertEquals("0b1011", calculadora.entraUm());
		calculadora.modoBin();
		assertEquals("0b1101111", calculadora.entraUm());
		assertEquals("0b1101111", calculadora.comandoSoma());
		calculadora.modoBin();
		assertEquals("0b1", calculadora.entraUm());
		calculadora.modoBin();
		assertEquals("0b1011", calculadora.entraUm());
		calculadora.modoBin();
		assertEquals("0b1101111", calculadora.entraUm());
		assertEquals("0b11011110", calculadora.comandoSoma());
		assertEquals("0", calculadora.limpa());

	}
	public void testeCalculadoraHexadecimal() throws CalculadoraException{
		Calculadora calculadora = new Calculadora();
		calculadora.modoHex();
		assertEquals("0x1", calculadora.entraUm());
		calculadora.modoHex();
		assertEquals("0xB", calculadora.entraUm());
		calculadora.modoHex();
		assertEquals("0x6F", calculadora.entraUm());
		assertEquals("0x6F", calculadora.comandoSoma());
		calculadora.modoHex();
		assertEquals("0x1", calculadora.entraUm());
		calculadora.modoHex();
		assertEquals("0xB", calculadora.entraUm());
		calculadora.modoHex();
		assertEquals("0x6F", calculadora.entraUm());
		assertEquals("0xDE", calculadora.comandoSoma());
		assertEquals("0", calculadora.limpa());
	}
	
	public void testeCalculadoraDiversas() throws CalculadoraException{
		Calculadora calculadora = new Calculadora();
		calculadora.modoDec();
		assertEquals("1", calculadora.entraUm());
		calculadora.modoHex();
		assertEquals("0xB", calculadora.entraUm());
		calculadora.modoBin();
		assertEquals("0b1101111", calculadora.entraUm());
		assertEquals("0b1101111", calculadora.comandoSoma());
		calculadora.modoHex();
		assertEquals("0x1", calculadora.entraUm());
		calculadora.modoBin();
		assertEquals("0b1011", calculadora.entraUm());
		calculadora.modoDec();
		assertEquals("111", calculadora.entraUm());
		assertEquals("222", calculadora.comandoSoma());
		assertEquals("1", calculadora.entraUm());
		assertEquals("223", calculadora.comandoSoma());
		assertEquals("1", calculadora.entraUm());
		calculadora.modoHex();
		assertEquals("0xB", calculadora.entraUm());
		assertEquals("0xEA", calculadora.comandoSoma());
		// Soma em decimal.
		assertEquals("1", calculadora.entraUm());
		assertEquals("235", calculadora.comandoSoma());
		assertEquals("0", calculadora.limpa());
	}
}
